xend: destroy restored domain when its device doesn't exist
authorKeir Fraser <keir.fraser@citrix.com>
Wed, 27 Jan 2010 08:59:47 +0000 (08:59 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Wed, 27 Jan 2010 08:59:47 +0000 (08:59 +0000)
A migrated domain keeps on running even though its disk doesn't
exist. This situation must be undesirable.

Signed-off-by: Kouya Shimura <kouya@jp.fujitsu.com>
tools/python/xen/xend/XendCheckpoint.py

index 7a38588d0cb52f061433fab9716dfa8646fc6747..50d671a1e9b7086f2bbcdc993138fc6161ea7f79 100644 (file)
@@ -344,19 +344,18 @@ def restore(xd, fd, dominfo = None, paused = False, relocating = False):
 
         try:
             dominfo.waitForDevices() # Wait for backends to set up
-        except Exception, exn:
-            log.exception(exn)
-
-        if lock:
-            XendDomain.instance().domains_lock.acquire()
+        finally:
+            if lock:
+                XendDomain.instance().domains_lock.acquire()
 
         if not paused:
             dominfo.unpause()
 
         return dominfo
-    except:
+    except Exception, exn:
         dominfo.destroy()
-        raise
+        log.exception(exn)
+        raise exn
 
 
 class RestoreInputHandler: